package com.edu.bhu.admin.service;

import java.util.List;

import com.edu.bhu.admin.domain.LibBook;
import com.edu.bhu.admin.domain.LibLoan;
import com.edu.bhu.common.core.domain.entity.SysUser;
import org.apache.ibatis.annotations.Param;

/**
 * 借阅信息Service接口
 * 
 * @author wangweibo
 * @date 2022-02-14
 */
public interface ILibLoanService 
{
    /**
     * 查询借阅信息
     * 
     * @param loanId 借阅信息主键
     * @return 借阅信息
     */
    public LibLoan selectLibLoanByLoanId(Long loanId);

    /**
     * 查询借阅信息列表
     * 
     * @param libLoan 借阅信息
     * @return 借阅信息集合
     */
    public List<LibLoan> selectLibLoanList(LibLoan libLoan);

    /**
     * 查询借阅信息列表(关联用户和书本信息)
     *
     * @param libLoan 借阅信息
     * @param libBook 书本信息
     * @param sysUser 用户信息
     * @return
     */
    public List<LibLoan> selectLibLoanWithInfoList(LibLoan libLoan, LibBook libBook, SysUser sysUser);

    /**
     * 查询借阅信息列表(关联用户和书本信息)(删除的)
     *
     * @param libLoan 借阅信息
     * @param libBook 书本信息
     * @param sysUser 用户信息
     * @return
     */
    public List<LibLoan> selectLibLoanWithInfoListDel(LibLoan libLoan, LibBook libBook, SysUser sysUser);

    /**
     * 新增借阅信息
     * 
     * @param libLoan 借阅信息
     * @return 结果
     */
    public int insertLibLoan(LibLoan libLoan);

    /**
     * 批量新增借阅信息
     *
     * @param libLoan 借阅信息
     * @return 结果
     */
    public int insertLibLoanBatch(String ids, LibLoan libLoan);

    /**
     * 批量修改借阅信息
     *
     * @return 结果
     */
    public int updateLibLoanBatch(String ids);

    /**
     * 修改借阅信息
     * 
     * @param libLoan 借阅信息
     * @return 结果
     */
    public int updateLibLoan(LibLoan libLoan);

    /**
     * 批量删除借阅信息
     * 
     * @param loanIds 需要删除的借阅信息主键集合
     * @return 结果
     */
    public int deleteLibLoanByLoanIds(String loanIds);

    /**
     * 删除借阅信息信息
     * 
     * @param loanId 借阅信息主键
     * @return 结果
     */
    public int deleteLibLoanByLoanId(Long loanId);

    /**
     * 批量删除借阅信息
     *
     * @param loanIds 需要删除的借阅信息主键集合
     * @return 结果
     */
    public int deleteLibLoanByLoanIdsForever(String loanIds);

    /**
     * 删除借阅信息信息
     *
     * @param loanId 借阅信息主键
     * @return 结果
     */
    public int deleteLibLoanByLoanIdForever(Long loanId);
}
